home *** CD-ROM | disk | FTP | other *** search
/ The 640 MEG Shareware Studio 2 / The 640 Meg Shareware Studio CD-ROM Volume II (Data Express)(1993).ISO / pascal / tpznewg.zip / TPZFILES.U < prev    next >
Text File  |  1990-01-18  |  3KB  |  110 lines

  1. UNIT TPZFiles;
  2. (* File manipulation routines for Turbo Pascal Zmodem *)
  3. (* (c)1988 by J.R.Louvau                              *)
  4. INTERFACE
  5. USES Dos;
  6.  
  7. FUNCTION  Z_OpenFile(VAR f: FILE; pathname: STRING): BOOLEAN;
  8. (* Return true if able to open an existing file *)
  9. FUNCTION  Z_MakeFile(VAR f: FILE; pathname: STRING): BOOLEAN;
  10. (* Return true if able to create a file *)
  11. PROCEDURE Z_CloseFile(VAR f: FILE);
  12. (* Closes a file and ignores errors *)
  13. FUNCTION  Z_SeekFile(VAR f: FILE; fpos: LONGINT): BOOLEAN;
  14. (* Find a byte position within a file *)
  15. FUNCTION  Z_WriteFile(VAR f: FILE; VAR buff; bytes: WORD): BOOLEAN;
  16. (* Read a specified number of bytes from a file *)
  17. FUNCTION  Z_ReadFile(VAR f: FILE; VAR buff; btoread: WORD; VAR bread: WORD): BOOLEAN;
  18. (* Search for a named file *)
  19. FUNCTION  Z_FindFile(pathname: STRING; VAR name: STRING; VAR size, time: LONGINT): BOOLEAN;
  20. (* Set time and date of a file *)
  21. PROCEDURE Z_SetFTime(VAR f: FILE; time: LONGINT);
  22.  
  23. IMPLEMENTATION
  24.  
  25.   CONST
  26.     DiskBufferSize = $7FFF;
  27.  
  28.   VAR
  29.     diskbuffer : ARRAY [0..DiskBufferSize] OF CHAR;
  30.  
  31.     bufferpos  : WORD;
  32.  
  33.  
  34. (*************************************************************************)
  35.  
  36. FUNCTION Z_OpenFile(VAR f: FILE; pathname: STRING): BOOLEAN;
  37. BEGIN {$I-}
  38.    Assign(f,pathname);
  39.    Reset(f,1);
  40.    bufferpos:=0;
  41.    Z_OpenFile := (IOresult = 0);
  42. END; {$I+}
  43.  
  44. FUNCTION Z_MakeFile(VAR f: FILE; pathname: STRING): BOOLEAN;
  45. BEGIN {$I-}
  46.    Assign(f,pathname);
  47.    ReWrite(f,1);
  48.    bufferpos:=0;
  49.    Z_MakeFile := (IOresult = 0)
  50. END; {$I+}
  51.  
  52. PROCEDURE Z_CloseFile(VAR f: FILE);
  53. BEGIN {$I-}
  54.    IF (bufferpos > 0) THEN BEGIN
  55.      BlockWrite (f,diskbuffer,bufferpos);
  56.      IF (IOResult <> 0) THEN;
  57.    END;  (* of IF *)
  58.    Close(f);
  59.    IF (IOresult <> 0) THEN
  60.       { ignore this error }
  61. END; {$I+}
  62.  
  63. FUNCTION Z_SeekFile(VAR f: FILE; fpos: LONGINT): BOOLEAN;
  64. BEGIN {$I-}
  65.    Seek(f,fpos);
  66.    Z_SeekFile := (IOresult = 0)
  67. END; {$I+}
  68.  
  69. FUNCTION Z_WriteFile(VAR f: FILE; VAR buff; bytes: WORD): BOOLEAN;
  70.  
  71. BEGIN {$I-}
  72.    IF ((bufferpos + bytes) > DiskBufferSize) THEN BEGIN
  73.      BlockWrite(f,diskbuffer,bufferpos);
  74.      bufferpos:=0;
  75.    END;  (* of IF *)
  76.    Move (buff,diskbuffer [bufferpos],bytes);
  77.    INC (bufferpos,bytes);
  78.    Z_WriteFile := (IOresult = 0)
  79. END; {$I+}
  80.  
  81. FUNCTION Z_ReadFile(VAR f: FILE; VAR buff; btoread: WORD; VAR bread: WORD): BOOLEAN;
  82. BEGIN {$I-}
  83.    BlockRead(f,buff,btoread,bread);
  84.    Z_ReadFile := (IOresult = 0)
  85. END; {$I+}
  86.  
  87. FUNCTION Z_FindFile(pathname: STRING; VAR name: STRING; VAR size, time: LONGINT): BOOLEAN;
  88. VAR
  89.    sr: SearchRec;
  90. BEGIN {$I-}
  91.    FindFirst(pathname,Archive,sr);
  92.    IF (DosError <> 0) OR (IOresult <> 0) THEN BEGIN
  93.       Z_FindFile := FALSE;
  94.       Exit
  95.    END;
  96.    name := sr.Name;
  97.    size := sr.Size;
  98.    time := sr.Time;
  99.    Z_FindFile := TRUE
  100. END; {$I+}
  101.  
  102. PROCEDURE Z_SetFTime(VAR f: FILE; time: LONGINT);
  103. BEGIN {$I-}
  104.    SetFTime(f,time);
  105.    IF (IOresult <> 0) THEN
  106.       {null}
  107. END; {$I+}
  108.  
  109. END.
  110.